package cn.bugstack.springframework.beans.factory.annotation;

import java.lang.annotation.*;


/**
 * Value注解定义了一个用于标注在字段、方法或参数上的元数据注解。
 * 它可以被用来标注一个具体的值，这个值可以是一个表达式，例如系统属性中的某个值。
 *
 * @Target 注解指定了Value注解可以被应用的元素类型，包括字段、方法和参数。
 * @Retention 注解指定了Value注解的生命周期为运行时，意味着在运行时可以通过反射访问到这个注解。
 * @Documented 注解表明这个注解应该被包含在文档中。
 */
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Value {

    /**
     * value方法定义了注解中实际的值表达式。
     * 例如，可以标注为 "#{systemProperties.myProp}" 来引用系统属性中的某个值。
     *
     * @return 返回值表达式的字符串表示。
     */
    String value();

}
